// Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#ifndef BASE_TYPE_CONVC_H
#define BASE_TYPE_CONVC_H

#include <codecvt>
#include <locale>
#include <string>
#include <vector>

#include <iostream>
#include <stdio.h>
#include <dirent.h>
#include <sys/types.h>

using namespace std;

enum LanguageEnum {
	LANG_ZH,
	LANG_EN
};

namespace ppspeech {
	// wstring to string
	string wstring2utf8string(const wstring& fpInWstring);

	// string to wstring
	wstring utf8string2wstring(const string& fpInString);

	vector<string> SplitUtf8(const string s);

	vector<string> StrSplit(const string& fpInString, const string& fpInPattern, size_t fInMaxsplit = string::npos);
	void StrReplace(string& fpInString, string fInStrPattern, string fInStrReplace);

	void WstrReplace(wstring& fpInWstring, const string fInStrPattern, const string fInStrReplace);

	vector<string> GetFolderFilenames(const string fInFolderPath);
	void DeleteVectorFiles(const vector<string> fInFilesVec, const string fInEndwith);

	double getTimeNow();
}

#endif  // BASE_TYPE_CONVC_H